Documentação do Banco de Dados
Introdução
Nesta seção, detalharemos a estrutura e a configuração do banco de dados utilizado no projeto. Utilizamos PostgreSQL como nosso sistema de gerenciamento de banco de dados relacional, juntamente com o FastAPI para a construção da API e Ormar como ORM (Object-Relational Mapping) para manipulação de dados.
Tabelas existentes
Tabela users
:
A tabela users
armazena informações dos usuários do sistema.
- id: Identificador único do usuário (chave primária).
- username: Nome de usuário.
- password: Senha do usuário.
- admin: Indica se o usuário é administrador (true/false).
CREATE TABLE users (
id serial PRIMARY KEY,
username text,
password text,
admin bool
);
Tabela robot
:
A tabela robot
armazena informações dos robôs associados aos usuários.
- id: Identificador único do robô (chave primária).
- name: Nome do robô.
- user_id: Identificador do usuário ao qual o robô está associado (chave estrangeira referenciando users.id).
CREATE TABLE robot (
id serial PRIMARY KEY,
name text,
user_id integer REFERENCES users (id)
);
Tabela media
:
A tabela media
armazena informações sobre mídias associadas aos robôs.
- uuid: Identificador único da mídia (chave primária).
- title: Título da mídia.
- type: Tipo da mídia (true para vídeo, false para imagem).
- date: Data de criação da mídia.
- robot_id: Identificador do robô ao qual a mídia está associada (chave estrangeira referenciando robot.id).
CREATE TABLE media (
uuid uuid PRIMARY KEY,
title text,
type bool,
date timestamp,
robot_id integer REFERENCES robot (id)
);
Tabela log
:
A tabela log
armazena registros de ações realizadas sobre as mídias.
- id: Identificador único do log (chave primária).
- media_uuid: Identificador da mídia associada (chave estrangeira referenciando media.uuid).
- action: Descrição da ação realizada.
- date: Data em que a ação foi realizada.
- type: Tipo de ação (true para sucesso, false para falha).
CREATE TABLE log (
id serial PRIMARY KEY,
media_uuid uuid REFERENCES media (uuid),
action text,
date timestamp,
type bool
);
Representação visual do Schema
Abaixo está a representação visual do schema do banco de dados utilizando a sintaxe ERD (Entity-Relationship Diagram). Esta representação ajuda a compreender as relações entre as tabelas e como os dados estão organizados.
erDiagram
USERS {
int id
text username
text password
bool admin
}
ROBOT {
int id
text name
int user_id
}
MEDIA {
uuid uuid
text title
bool type
timestamp date
int robot_id
}
LOG {
int id
uuid media_uuid
text action
timestamp date
bool type
}
USERS ||--o{ ROBOT : "possui"
ROBOT ||--o{ MEDIA : "possui"
MEDIA ||--o{ LOG : "possui"
Explicação das Relações
-
USERS e ROBOT: Um usuário pode possuir múltiplos robôs, mas cada robô está associado a um único usuário. Esta relação é representada como
USERS ||--o{ ROBOT
. -
ROBOT e MEDIA: Cada robô pode ter várias mídias associadas, mas cada mídia está associada a um único robô. Esta relação é representada como
ROBOT ||--o{ MEDIA
. -
MEDIA e LOG: Cada mídia pode ter múltiplos logs, mas cada log está associado a uma única mídia. Esta relação é representada como
MEDIA ||--o{ LOG
.
O diagrama acima mostra como as tabelas estão conectadas umas às outras através de chaves estrangeiras. Ele fornece uma visão clara de como os dados fluem entre as tabelas e como elas se relacionam umas com as outras.